package com.cskaoyan.javase.oop3._2inner._3local._3notice;

/**
 * 在在外围类的成员方法中的,局部内部类中的
 * 成员方法中访问作用域内部的局部变量,是可以的
 * 但是不能修改,一旦修改就会报错:
 *      Variable 'a' is accessed from within inner class, needs to be final or effectively final
 * 所以,使用局部内部类,有一个注意事项:
 *      在局部内部类当中,如果想要访问作用域内部类的局部变量,那么:
 *          该局部变量要么直接声明为final,要么就永远不能修改它(事实上的final)
 *
 * 那么为什么呢?为什么有这种语法设计呢?
 *
 * @since 11:20
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {

    }
}

class EnclosedClazz {
    public void test() {
        // 在外围类的成员方法中,定义局部变量a
        int a = 10;
        class Inner {
            void testInner(){
                // 在在外围类的成员方法中的,局部内部类中的
                // 成员方法中访问作用域内部的局部变量,是可以的
                System.out.println(a);
                // a = 100;
            }
        }
    }
}
